//提供：可以通过 synchronized 或者 Lock 来实现一个死锁代码。
//所谓的死锁就是线程一拥有锁1，线程二拥有锁2，
// 双方在拥有自身锁的同时尝试获取对方的锁，最终两个线程就会进入无线等待的状态
// ，这就是死锁。
public class ThreadDemo1 {
    public static void main(String[] args) {
        Thread t1=new Thread(()->{
            synchronized ("蛋糕"){
                try {
                    Thread.sleep(3000);
                    System.out.println(Thread.currentThread().getName());
                } catch (InterruptedException e) {
                    throw new RuntimeException(e);
                }
                synchronized ("奶茶"){
                    System.out.println("t1拿到了蛋糕和奶茶");
                }
            }
        });
        Thread t2=new Thread(()->{
            synchronized ("奶茶"){
                try {
                    Thread.sleep(3000);
                } catch (InterruptedException e) {
                    throw new RuntimeException(e);
                }
                synchronized ("蛋糕") {
                    System.out.println("t2拿到了奶茶和蛋糕");
                }
            }
        });
        t1.start();
        t2.start();
    }
}
